/**
 * 字体的计算
 * style：字体类型。可以是数字或者系统字体（initial、small、large等等）；
 * 		也可以是'12px'，这种字符串。支持px和upx（0.5倍的px）。返回的数值统一是px单位
 * 	fontSize 既定主题信息中的基础值，是数字
 * 	fontScale 必须是大于1的值，如果小于1将要加1
 * forNumber：是否只返回数值
 */
module.exports = (style = 'normal', obj, forNumber) => {
	if (obj) {
		let {fontSize, fontScale} = obj
		if (fontScale < 1) {
			// 计算的时候必须大于1
			fontScale += 1
		}
		if (typeof(style) === 'number') {
			if (forNumber) {
				return style
			}
			return style + 'px'
		}
		if (typeof(style) === 'string') {
			switch (style){
				case 'xx-small':
					fontSize = fontSize / fontScale / fontScale / fontScale / fontScale
					break
				case 'x-small':
					fontSize = fontSize / fontScale / fontScale / fontScale
					break
				case 'smaller':
					fontSize = fontSize / fontScale / fontScale
					break
				case 'small':
					fontSize = fontSize / fontScale
					break
				case 'normal':
				case 'initial':
					fontSize = fontSize
					break
				case 'large':
					fontSize = fontSize * fontScale
					break
				case 'larger':
					fontSize = fontSize * fontScale * fontScale
					break
				case 'x-large':
					fontSize = fontSize * fontScale * fontScale * fontScale
					break
				case 'xx-larger':
					fontSize = fontSize * fontScale * fontScale * fontScale * fontScale
					break
				default:
					if (parseFloat(style) > 0) {
						if (forNumber) {
							return parseFloat(style)
						}
						return style + 'px'
					}
					if (style.substr(style.length - 3, 3) === 'upx') {
						const res = style.substr(0, style.length - 3)
						if (parseFloat(res) > 0) {
							if (forNumber) {
								return parseFloat(res) * 0.5
							}
							return parseFloat(res) * 0.5 + 'px'
						}
					}
					if (style.substr(style.length - 2, 2) === 'px') {
						const res = style.substr(0, style.length - 2)
						if (parseFloat(res) > 0) {
							if (forNumber) {
								return parseFloat(res)
							}
							return parseFloat(res) + 'px'
						}
					}
					return style
			}
			if (forNumber) {
				return fontSize
			}
		}
		return fontSize + 'px'
	}
	return 'initial'
}